<?php

require(dirname(dirname(dirname(__FILE__))).'/conf/Init.php');
require PHPLIB. "/Base/Jobs/Base.php";

/**
 * 此脚本用于为微信服务号更新必要数据，包括：
 *
 *     获取access token
 *     获取jsapi_ticket
 *
 * 安装crontab示例：
 * 0 * * * * /data1/bin/php /data1/htdocs/weixin.hrbb.com.cn/app/jobs/Token.php 2>&1 1>> /data1/logs/weixin.hrbb.com.cn/token.log
 */
class Token extends \Base\Jobs\Base {

    const RETRY_TIMES = 3;  //失败重试次数

    public function exec($argv=null) {
        $this->updateAccessToken();  //获取access_token必须放在第一位，作为其他接口调用的基础
        $this->updateJSApiTicket();
    }

    /**
     * 更新access_token
     */
    private function updateAccessToken(){
        for ($count = 0; $count < self::RETRY_TIMES; $count ++) {
            $token = \Modules\Wechat\Lib\AccessToken::fetch();

            if (! empty($token['access_token']) && ! empty($token['expires_in'])) {
                if (\Modules\Wechat\Lib\AccessToken::set($token)) {
                    echo date("Y-m-d H:i:s") . "set access_token succ" . PHP_EOL;
                    break;
                } else {
                    echo date("Y-m-d H:i:s") . "set access_token fail" . PHP_EOL;
                }
            }
        }
    }

    /**
     * 更新jsapi_ticket
     */
    private function updateJSApiTicket(){
        for ($count = 0; $count < self::RETRY_TIMES; $count ++) {
            $ticket = \Modules\Wechat\Lib\JSTicket::fetch();

            if (! empty($ticket['ticket']) && ! empty($ticket['expires_in'])) {
                if (\Modules\Wechat\Lib\JSTicket::set($ticket)) {
                    echo date("Y-m-d H:i:s") . "set jsapi_ticket succ" . PHP_EOL;
                    break;
                } else {
                    echo date("Y-m-d H:i:s") . "set jsapi_ticket fail" . PHP_EOL;
                }
            }
        }
    }

}
new Token($argv);